/*
 * Copyright (c) 2023 fred
 * Licensed under the Apache License,Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { Attributes } from '../../nodes/Attributes'
import { ParseSettings } from '../ParseSettings'
import { TokenType } from '../TokenType'
import { TokenTag } from './TokenTag'
export class TokenStartTag extends TokenTag {
  constructor() {
    super()
    this.type = TokenType.StartTag
  }

  reset(): TokenTag {
    super.reset()
    this.attributes = null
    return this
  }

  asStartTag(): TokenStartTag {
    return this
  }

  nameAttr(name: string, attributes: Attributes): TokenStartTag {
    this.tagName = name
    this.attributes = attributes
    this.normalName = ParseSettings.normalName(this.tagName)
    return this
  }

  public toString(): string {
    if (this.hasAttributes() && this.attributes.size() > 0) {
      return `<${this.toStringName()} ${this.attributes.toString()}>`;
    } else {
      return `<${this.toStringName()}>`
    }
  }
}